#!/bin/bash

# ==============================================
# 位置参数变量综合演示脚本
# 功能：接收用户输入的多个参数，展示各类位置参数的特性
# 使用方式：./positional_params_demo.sh 参数1 参数2 参数3 ...（建议输入3-5个参数，含空格的参数用引号包裹，如 "hello world"）
# ==============================================
IFS=" "
echo -e "=== 1. \$0：脚本名称及路径 ==="
sname=$(readlink -f "$0")
echo "脚本完整路径：$sname"
echo "仅脚本名称：$(basename $sname)"

echo -e "\n=== 2. \$#：参数总个数 ==="
echo "你输入的参数总个数：$#"

echo -e "\n=== 3. 无引号：\$* 和 \$@ 的遍历效果 ==="
echo -e "遍历 \$* 的结果："
for param in $*; do
    echo "  - 单个参数：$param"
done

echo -e "\n遍历 \$@ 的结果："
for param in $@; do
    echo "  - 单个参数：$param"
done

echo -e "\n=== 4. 有引号：\"$*\" 和 \"$@\" 的遍历效果（重点！） ==="
echo -e "遍历 \"\$*\" 的结果（所有参数被合并为1个字符串）："
for param in "$*"; do
    echo "  - 单个参数：$param"
done

echo -e "\n遍历 \"\$@\" 的结果（保留原始参数分隔，推荐使用）："
for param in "$@"; do
    echo "  - 单个参数：$param"
done

echo -e "\n=== 5. 结合 \$# 做参数校验 ==="
if [ $# -eq 0 ]; then
    echo "错误：未输入任何参数！"
    echo "使用方法：$(basename $0) 参数1 参数2 ...（例：./$(basename $0) apple \"banana pear\" orange）"
    exit 1
else
    echo "参数校验通过，共输入 $# 个有效参数～"
fi

echo -e "\n=== 6. 单个位置参数（\$1、\$2、\$3） ==="
echo "第1个参数（\$1）：${1:-无}"
echo "第2个参数（\$2）：${2:-无}"
echo "第3个参数（\$3）：${3:-无}"
echo "第10个参数（\${10}）：${10:-无}"
